//
//  StatusPicturesView.swift
//  新浪微博
//
//  Created by MBP on 16/5/20.
//  Copyright © 2016年 MBP. All rights reserved.
//

import UIKit

class StatusPictureView: UIView {
    
    /// 配图视图数组
    var pic_urls: [StatusPictures]? {
        didSet {
            
            // 1. 隐藏所有的图像视图
            for v in subviews {
                v.hidden = true
            }
            
            // 2. 遍历数组，依次设置图像
            var index = 0
            for url in (pic_urls ?? []) {
                
                // 1. 根据遍历的 `索引` 获取到图像视图
                let iv = subviews[index++] as! UIImageView
                
                // 2. 设置图像
                iv.pn_setImageWithURL(url.thumbnail_pic, placeholderName: nil)
                
                // 3. 显示图像
                iv.hidden = false
                
                // 4. 处理4张图像
                if index == 2 && pic_urls?.count == 4 {
                    index += 1
                }
            }
        }
    }
    
    
    override init(frame: CGRect) {
        super.init(frame: frame)
        
        setupUI()
    }
    
    required init?(coder aDecoder: NSCoder) {
        fatalError("init(coder:) has not been implemented")
    }
}

// MARK: - 设置界面
extension StatusPictureView {
    
    private func setupUI() {
        // 0. 设置背景颜色
        backgroundColor = UIColor.whiteColor()
        // 超出视图范围的内容，全部裁切掉
        // 在用 storyboard 开发的时候，默认是 true，但是，使用 代码开发，默认是 false
        clipsToBounds = true
        
        // 1. 添加 `9` 个图像视图
        // 每张图像的bounds
        let rect = CGRect(origin: CGPointZero, size: PNStatusCellLayout.pictureSize)
        // 移动步长
        let step = PNStatusCellLayout.pictureSize.width + PNStatusCellLayout.picturesMargin
        
        for i in 0..<9 {
            let iv = UIImageView()
            
            // 设置内容填充模式 .ScaleAspectFit 在九宫格能够产生犬牙交错的效果
            iv.contentMode = .ScaleAspectFill
            iv.clipsToBounds = true
            
            // 设置视图的位置
            // 1> 根据 i 计算出每张图片所在的行和列
            let row = CGFloat(i / Int(PNStatusCellLayout.linePicturesCount))
            // `模`数
            let col = CGFloat(i % Int(PNStatusCellLayout.linePicturesCount))
            
            // 2> 设置位置
            iv.frame = CGRectOffset(rect, col * step, row * step)
            
            addSubview(iv)
        }
    }
}
